/*******************************************************************************
  * 文件：Display.h
  * 作者：djy
  * 版本：v1.0.0
  * 日期：2024.02.18
  * 说明：显示驱动程序
*******************************************************************************/
#ifndef _DISPLAY_H
#define _DISPLAY_H

/* 头文件 *********************************************************************/
#include "Typedefine.h"
#include "Constant.h"
#include "Macro.h"
#include "Hardware_IO.h"

/* 宏定义 *********************************************************************/
#define DISPLAY_Index_E             (U8)11 
#define DISPLAY_Index_P             (U8)15
#define DISPLAY_Index_A             (U8)20 
#define DISPLAY_Index_F             (U8)23
#define DISPLAY_Index_NoPot         (U8)27

/* 类型定义 *******************************************************************/
typedef struct
{
    U8    bSEG1 : 1;
    U8    bSEG2 : 1;
    U8    bSEG3 : 1;
    U8    bSEG4 : 1;
    U8    bSEG5 : 1;
    U8    bSEG6 : 1;
    U8    bSEG7 : 1;
    U8    bSEG8 : 1;
}GRIDx_ts;// GRIDx SEG位域定义

typedef union
{
    U8          u8Byte;
    GRIDx_ts    sGRIDx;
}GRIDx_tu;// GRIDx 与 Byte共用体定义

/* 根据实际原理图设计，仅用到GRID1-6与SEG1-8，因此只需刷新偶数地址的寄存器 */
typedef struct
{
    GRIDx_tu uGrid1_00_Byte;
    GRIDx_tu uGrid2_02_Byte;
    GRIDx_tu uGrid3_04_Byte;
    GRIDx_tu uGrid4_06_Byte;
    GRIDx_tu uGrid5_08_Byte;
    GRIDx_tu uGrid6_0A_Byte;
}DisplayRegData_ts;

/* 变量声明 *******************************************************************/
/* 函数声明 *******************************************************************/

void Display_HobDot(U8 u8CZIndex,Bool bState);   // CZ Dot显示

void Display_Hob1Gear(U8 u8Gear);       // 显示炉头1档位
void Display_Hob2Gear(U8 u8Gear);       // 显示炉头2档位
void Display_Hob3Gear(U8 u8Gear);       // 显示炉头3档位
void Display_Hob4Gear(U8 u8Gear);       // 显示炉头4档位

void Display_Hob1Clear(void);           // 显示板炉头1清空
void Display_Hob2Clear(void);           // 显示板炉头2清空
void Display_Hob3Clear(void);           // 显示板炉头3清空
void Display_Hob4Clear(void);           // 显示板炉头4清空

void Display_Hob1Idle(void);            // 显示炉头1空闲
void Display_Hob2Idle(void);            // 显示炉头2空闲
void Display_Hob3Idle(void);            // 显示炉头3空闲
void Display_Hob4Idle(void);            // 显示炉头4空闲

void Display_Hob1Hot(void);             // 显示炉头1余热
void Display_Hob2Hot(void);             // 显示炉头2余热
void Display_Hob3Hot(void);             // 显示炉头3余热
void Display_Hob4Hot(void);             // 显示炉头4余热

void Display_Hob1Pause(void);           // 显示炉头1暂停
void Display_Hob2Pause(void);           // 显示炉头2暂停
void Display_Hob3Pause(void);           // 显示炉头3暂停
void Display_Hob4Pause(void);           // 显示炉头4暂停

void Display_Hob1NoPot(void);           // 显示炉头1无锅
void Display_Hob2NoPot(void);           // 显示炉头2无锅
void Display_Hob3NoPot(void);           // 显示炉头3无锅
void Display_Hob4NoPot(void);           // 显示炉头4无锅

void Display_ShowLock(void);            // 显示板显示童锁
void Display_ShowTime(U8 u8Time);        // 显示定时时间
void Display_ShowIdle(void);            // 显示板显示时间空闲
void Display_ClearTime(void);           // 显示板显示时间清空

void Display_ShowAll(void);             // 显示板所有LED数码管全亮
void Display_ClearAll(void);            // 显示板全灭

void Display_Init(void);                // 显示板初始化

#endif /* _DISPLAY_H */

/***************************** 文件结束 ***************************************/
